#include <stdlib.h>
#include "map.h"

using namespace nbds;

void check(bool test) {
	if (!test)
		exit(1);
}

int main() {
	map<int, int> m;
	
	check(m.is_empty());

	m.add(9, 1);
	m.add(4, 2);
	m.add(2, 3);
	m.add(5, 4);
	m.add(5, 1);

	check(!m.is_empty());

	check(m.get(5) == 4);
	check(m.get(4) == 2);
	check(m.get(9) == 1);
	check(m.get(2) == 3);

	m.add(1, 6);
	m.add(3, 7);
	m.set(9, 5);

	check(m.get(5) == 4);
	check(m.get(4) == 2);
	check(m.get(9) == 5);
	check(m.get(2) == 3);
	check(m.get(3) == 7);
	check(m.get(1) == 6);

	map<int, int> k = m;

	check(k.get(5) == 4);
	check(k.get(4) == 2);
	m.set(9, 1);
	check(k.get(9) == 5);
	check(k.get(2) == 3);
	check(k.get(3) == 7);
	check(k.get(1) == 6);

	check(k.remove(1) == 6);
	check(k.get(1) == 0);
	check(k.remove(3) == 7);
	check(k.remove(5) == 4);
	check(k.remove(2) == 3);
	check(k.remove(4) == 2);
	check(k.remove(9) == 5);

	check(k.is_empty());
}
